package de.hb.bv2.u03;

public class Complex implements Comparable<Complex>
{
	double re, im; // Real- und Imaginaerteil.
	int pos; // Index des Fourierdeskriptor
	
	
    /**
     * Kontur zeichnen.
     * 
     * @param re Realteil der komplexen Zahl.
     * @param im Imaginaerteil der komplexen Zahl.
     * @param pos Index des Fourierdeskriptor.
     */
	Complex(double re, double im, int pos) 
	{ 
		this.re = re;
		this.im = im;
		this.pos = pos;
	}

	
    /**
     * Vergleichsoperation fuer komplexe Zahlen.
     * Die komplexen Zahlen werden hierdurch 
     * betragsmaessig absteigend sortiert.
     * 
     * @param n Die komplexe Zahl, die mit dem Objekt 
     *          verglichen werden soll.
     * 
     * @return Das Ergebnis der Vergleichsoperation.
     */
	public int compareTo(Complex n) 
	{
		// Die zu vergleichenden Betrage berechnen.
		double betragN = Math.sqrt(Math.pow(n.re, 2)+Math.pow(n.im, 2));
		double betragThis = Math.sqrt(Math.pow(this.re, 2)+Math.pow(this.im, 2));
		
        if(Double.compare(betragThis, betragN) < 0)
            return 1;
        if(Double.compare(betragThis, betragN) > 0)
            return -1;
            
        return 0;
	}
}
